Reconfigurable Spaces

ABSTRACT

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for reconfigurable spaces. One of the methods includes identifying plan information relating to a space under evaluation. Constraints related to structures associated with the plan information are identified. Input regarding uses or elements to be included in a reconfigurable design for the space is received. A library of elements for inclusion in the space is evaluated, including determining one or more reconfigurable elements that satisfy the received input. A first configuration of a reconfigurable element is determined including a first placement in a first design associated with the space, and the first design in accordance with the first configuration is presented. A second different configuration is determined, including a second placement in a second different design associated with the space, and the second different design in accordance with the second different configuration is presented.

BACKGROUND

Computer-aided design (“CAD”) software can aid in generating,optimizing, or analyzing designs for products, architecture, or terrain.CAD software generally can read, modify and output electronic files thatdefine a particular design. A user of CAD software can createtwo-dimensional designs, e.g., with 2D vector-based drafting, orthree-dimensional designs, e.g., with solid and surface models. CADsoftware can include templates of shapes and designs that a user cancombine to produce a model.

CAD software can be run on devices, i.e., computers, mobile devices, orbe hosted in a data center and provided to a remote device using adisplay protocol. A user can generally interact with CAD software usinga mouse, keyboard or other peripheral, and in the case of certaindevices, by swiping or touching a touch-sensitive display.

SUMMARY

This specification describes technologies relating to computer-aideddesign.

In general, one innovative aspect of the subject matter described inthis specification can be embodied in methods that include the actionsof identifying plan information relating to a space under evaluation;identifying constraints related to structures associated with the planinformation; receiving input regarding uses or elements to be includedin a reconfigurable design for the space; evaluating a library ofelements for inclusion in the space including determining one or morereconfigurable elements that satisfy the received input, wherein theevaluating is based at least in part on the plan information, theconstraints and the input; determining a first configuration of areconfigurable element of the one or more reconfigurable elementsincluding a first placement in a first design associated with the spaceand presenting the first design including the reconfigurable element inaccordance with the first configuration; and determining a seconddifferent configuration of the reconfigurable element including a secondplacement in a second different design associated with the space andpresenting the second different design including the reconfigurableelement in accordance with the second different configuration, whereinthe method further includes identifying one or more additional elementsrequired to reconfigure the reconfigurable element into the first andsecond different configurations and adding the one or more additionalelements into the first and second different designs.

The foregoing and other embodiments can each optionally include one ormore of the following features, alone or in combination. The planinformation includes a plan that is selected from the group comprising afloor plan, a footprint or a lot plan. Identifying constraints includesdetermining whether one or more structures that are included in thespace are or are not reconfigurable. Evaluating the library includesdetermining a reconfigurable element for at least one of thereconfigurable structures that is included in the space. Identifyingconstraints includes receiving constraint information from a user thatidentifies constraints associated with the space. Receiving inputincludes receiving at least two uses for the space and whereindetermining the reconfigurable element is performed so as to enablesatisfaction of plural uses of the at least two uses. Receiving inputincludes receiving an indication of an element to include in the firstand second different designs, and wherein the method further includesdetermining a plurality of configurations for the element, determiningone or more additional elements that are required to be included in thefirst and second different designs to enable reconfiguration of theelement when in the first design as compared to when in the seconddifferent design, and adding the one or more additional elements to thefirst and second different designs. The evaluating is automatic andwherein determining one or more reconfigurable elements includesdetermining one or more reconfigurable elements from the library. Thefirst placement and the second placement is the same and thereconfiguration of the reconfigurable element is changed in the firstdesign and second design without changing a position of thereconfigurable element. The first placement and the second placement isdifferent, and wherein the method further includes determining one ormore additional elements for inclusion in the first and second designsthat are required to enable a change of location of the reconfigurableelement from the first location to the second location. Determining afirst configuration includes determining a first configuration that isin accordance with a first use that is received as part of the input andwherein determining the second different configuration includesdetermining a second different configuration of the reconfigurableelement that is in accordance with a second different use that isreceived as part of the input. The reconfigurable element is selectedfrom the group comprising a wall structure, a furniture item, a tablestructure, a bookshelf, doors, windows, desks, tables, work surfaces,steps, or shelves. The one or more additional elements are selected fromthe group comprising pivots, tracks, pulleys, running boards. Thepresenting the first and second different designs includes presentingalternative designs as suggestions to a viewer including differentconfigurations of the reconfigurable element. The actions includereceiving an update to one or more of the input including update to ause or element, and the method further comprising determining a newreconfigurable element or reconfiguring the reconfigurable element inaccordance with the update. The actions include determiningmodifications to one or more elements included in the first design orone or more additional elements for inclusion in the first design inorder to enable the reconfiguration of the reconfigurable element fromthe first configuration to the second different configuration. Theactions include including the one or more determined additional elementsin the first and second different designs. Receiving input includesreceiving one or more rules that govern desired uses of the space,configuration of the space or elements in the space, preferences of theuser or required elements to be included in one or more of the first orsecond different designs. The actions include providing the first designto a viewer, receiving input for one or more additional considerationsfor the space and providing the second different design thatincorporates the one or more additional considerations. The actionsinclude prior to evaluating, receiving input that defines the initialfirst and second different designs without the inclusion of areconfigurable element, evaluating the initial first and seconddifferent designs, and wherein evaluating the library includesdetermining the reconfigurable element for inclusion in both the firstand second different designs based on the evaluating the initial firstand second different designs. The actions include identifying one ormore additional elements required to reconfigure the reconfigurableelement into the first and second different configurations and addingthe one or more additional elements into the first and second differentdesigns. The input includes at least two uses and wherein identifyingplan information includes suggesting one or more candidate plans andreceiving a selection of a plan. The actions include providing acontroller for configuring and reconfiguring the space based on thefirst and second different designs. The received input is parameterbased and defines one or more parameters for uses, elements, orconfigurations of the space. The received input is rules based anddefines one or more rules for uses, elements or configurations of thespace. Identifying one or more constraints includes identifying one ormore of a physical constraint on an element for inclusion in the spaceor other constraint on the first or second different design. Theconstraint is a cost of the reconfigurable element or additionalelements required to support the first and second configurations.

Particular implementations of the subject matter described in thisspecification can be implemented so as to realize none, one, or more ofthe following advantages. A user can input architectural planinformation that identifies a plan (such as a floor plan) and proposeduses of the space, and automatically receive different designs for thespace that include reconfigurable elements including suggestions forlocating or configuring the reconfigurable elements to meet one or moreof the proposed uses. The system can present different designs of thespace that accommodate the different configurations of thereconfigurable elements. A user can therefore quickly determine optimalplacements of elements that maximize the usefulness of the space byincorporating reconfigurable elements.

The details of one or more embodiments of the subject matter describedin this specification are set forth in the accompanying drawings and thedescription below. Other features, aspects, and advantages of thesubject matter will become apparent from the description, the drawings,and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of an example reconfigurable element system.

FIG. 2 illustrates an example process for determining configurations ofreconfigurable elements.

FIG. 3A illustrates an example design with a reconfigurable element in afirst configuration.

FIG. 3B illustrates an example design with a reconfigurable element in asecond configuration.

FIG. 4 is a block diagram of an example data processing apparatus thatcan implement the reconfigurable element system.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

A system can receive architectural plans and use information for aspace, determine elements, e.g., tables, chairs, walls, windows,fixtures, and so on, that are preferable for the space, and providepotential designs to a user. The system can automaticallydetermine/suggest reconfigurable elements, i.e., any element that canhave more than one configuration or functions in the space, forinclusion in the space that satisfy one or more of the proposed usesdefined by the use information.

In determining elements the system receives input identifying intendeduses of the space, any desired elements and constraints. That is, thesystem can better determine designs of the space with knowledge of theintended use of the space, desired elements and any constraints imposedby the space or the user. For instance if the space is a live/work loft,the system can determine that part of the space should accommodateliving, and the other part should accommodate a desk, bookshelf, andother work related elements. The system can identify reconfigurableelements, e.g., a table that can change into a bookshelf, to effect theintended uses of the space, e.g., a live/work loft.

Furthermore the system can receive constraints derived from the plans ordirectly from a user that identify any constraint elements, e.g.,structures in the plan, that are pre-existing within or relate to thespace including individual constraints (such as constraints that areparticular to a given user or plan). Examples of individual constraintsinclude cost or price constraints. For example, the user can prefer tokeep the total cost of the elements within a certain budget, or to seedifferent designs with varying levels of budget.

FIG. 1 is a diagram of an example reconfigurable element system 102. Thereconfigurable element system 102 can be implemented as computerprograms that are executed on one or more computers in one or morelocations, in which the systems, components, and techniques describedbelow, can be implemented.

The reconfigurable element system 102 is configured to identify planinformation, e.g., an architectural plan, which relates to a space, afloor plan of an apartment, building, or any arbitrary physical space, alot or other space layout or description. Plan information can identifyany existing structures or elements associated with the plan, e.g.,walls, doors, windows, toilets, showers, natural elements (e.g., a largetree in a backyard), additional structures (e.g., a gazebo), or othernecessary elements. Identification can include receipt of the planinformation from the user 122 or retrieval of the plan information fromone or plural sources. In some implementations, a user provides the planinformation to the reconfigurable element system 102. In someimplementations, the plan information is variable, in that, the planinformation can vary depending on uses that are desired. For example, aswill be discussed in greater detail below, a user may first specify usesfor a space, and the reconfigurable element system 102 may determineavailable or suitable plan information to support the intended uses. Forexample, a user may desire to plan for a house to be built on a vacantlot. After specification of the desired intended uses (as discussed ingreater detail below), the reconfigurable element system 102 mayidentify one or more suitable plans that support the intended uses. Auser may then select from the identified suitable plans or an automaticselection may be made by the system 102.

Information is received or identified for intended uses of the space bythe reconfigurable element system 102. For example, a user 122 can inputinformation 116 about how the space is to be used, who the intendedinhabitants of the space are, or any information relevant to the form orfunction of the space that is desirable. The input information 116 caninclude one or more preferences such as priorities associated with eachintended use, form, or function that is specified. The input information116 can be specific and include one or more required elements, one ormore preferred elements and one or more optional elements. The inputinformation 116 can include multiple uses of the space, e.g., alive/work loft. Other information, such as one or more constraints canbe received and processed as well. Constraints are discussed in greaterdetail below.

The reconfigurable element system 102 includes a library of elements108, e.g., a database or data structure that includes elements, whichthe reconfigurable element system 102 can access to obtain elements toplace in the space. The elements can include any object or structurethat might be placed in real property, e.g., beds, counters, tables,chairs, partitions, lights, fixtures and any object or structure that isused to install or connect an element, e.g., steps, running boards,pivots, hinges, tracks, pulleys, and so on. The library of elements 108includes reconfigurable elements 112 that can have two or moreconfigurations. By way of illustration, a sliding wall can have a firstconfiguration, e.g., separating two halves of an apartment, and a secondconfiguration, e.g., sliding into a second position to open up the twohalves of the apartment into one contiguous space. Examples ofreconfigurable elements 112 include walls, doors, windows, desks,tables, work surfaces, steps, shelves, or other platforms that fold flatvertically or horizontally.

The reconfigurable element system 102 includes a constraintidentification engine 110 to identify constraints, i.e., any limitingfactors of the plan, intended uses, or structures that would precludeuse or inclusion of certain elements in a given design. For example, ina plan for a 700 sq. ft. apartment the reconfigurable element system 102can identify constraints limiting larger structures from being includedin the plan. Constraints can be based on specific information, e.g., anystructures, included in the plan information. For example, the planinformation my show locations of structures, e.g., doors, windows,support walls, or other elements that cannot be changed. Immovableelements can be considered constraints imposed on a given design. Theconstraint identification engine 110 can evaluate any identifiedconstraints and provide feedback or suggestions to ensure that acompliant design is produced. Constraints be based on user input, suchas to reflect budget or to support required, desired, or optionalintended uses of the space. Constraints are discussed in greater detailbelow.

The reconfigurable element system 102 evaluates the library of elements108 to identify elements for inclusion in the space using areconfigurable element engine 114. The reconfigurable element engine 114determines one or more reconfigurable elements 112 that can be includedin the space using the identified plan information, identifiedconstraints, and any input information 116 from a user 122 thatidentifies uses of the space or elements to be included in the space.The input information 116 can identify, for example, that the space isto be a 700 sq. ft. apartment, and that a user desires a reconfigurableelement 112, i.e., a sliding wall, to turn the room from a two roomapartment into a studio apartment. The reconfigurable element system 102can then access the library of elements 108 to obtain elements that fitwithin the space and meet the desired use or specified requirement. Forexample, a reconfigurable element can be a table that can transitioninto a bookshelf To effect the transition, the table can include partsthat can fold vertically upwards to create a bookshelf.

After identifying the reconfigurable elements 112 for inclusion in aspace, the reconfigurable element system 102 uses a configuration engine118 to place reconfigurable elements 112 and any additional supportingelements in the space. The configuration engine 118 determinesplacements of the reconfigurable elements 112 in each of theconfigurations, e.g., a sliding wall is placed across the middle of a700 sq. ft. apartment in a first configuration creating two rooms andslid against another wall in a second configuration opening up theapartment. With some reconfigurable elements 112, the placement of thereconfigurable element in each configuration can be identical. Forexample, a reconfigurable element 112 with a first configuration, e.g.,a table, and a second configuration, e.g., a bookshelf created byfolding internal elements in the table upwards, can have the sameplacement (e.g., location).

Furthermore, the configuration engine 118 can identify supportingelements that effect the different configurations of any reconfigurableelements 112. For example, the configuration engine 118 can determinethat the sliding wall discussed above needs additional elements 120 suchas steps, running boards, pivots, hinges, tracks, or pulleys to allowthe different configurations desired by a user.

The configuration engine 118 is further configured to provide to a user122 different designs 124 of the reconfigurable elements 112 and anysupporting additional elements 120. The designs 124 accommodate thedifferent configurations of the reconfigurable elements 112, e.g., theconfiguration engine 118 provides a first design with a sliding wall ina first configuration, and a second design with the sliding wall in asecond configuration.

FIG. 2 illustrates an example process for determining configurations ofreconfigurable elements. The process 200 will be described as beingperformed by a system of one or more appropriately programmed computers,e.g., the reconfigurable element system 102 of FIG. 1.

The system identifies plan information related to a space (step 202).Plan information can include architectural plans, e.g., a floor plan, afootprint, a lot plan, and so on, related to a space underconsideration. For instance, a space can include a park, an apartmentbuilding, a waterfront, any type of open terrain, or any bounded area. Auser can provide (or otherwise designate) the plan information to thesystem, e.g., a user can input a file that includes plan information, orcan manually enter plan information into the system. Plan informationcan include structures present in the plan, such as a wall, stove,industrial machinery, sink holes or natural elements. In someimplementations the user can provide information including none, one, orall of the following: dimensions of each structure, the location of eachstructure, and whether the structure is reconfigurable with thedimensions, location, and cost of each configuration. The user can alsoselect from a listing or menu of candidate structures. In some otherimplementations the plan information itself can identify structures.

In some implementations the system can ask the user a series ofquestions and generate plan information. For example the system canrequest information related to the size of the space, or the layoutdesired. Furthermore, the system can provide candidate plans of spaces,e.g., a candidate plan for a one bedroom apartment, an industrialcenter, or an office. A user can then select from the candidate plans,and modify attributes associated with the candidate plans, e.g., anattribute that identifies the square footage of the candidate plan,attributes that identify a shape of the plan, and so on.

In some implementations the system can receive designs for the spacethat already include elements, but no reconfigurable elements. That is,the system can receive from the user previously determined designs, ordesigns created manually by the user. The system then can determinereconfigurable elements to include in the space, to optimize thefunctionality of the space.

The system identifies constraints (e.g. structures) associated with orrelated to the plan information (step 204). A constraint can be anylimiting factors of or related to the plan, e.g., cost, size, location,which would limit or preclude certain elements, e.g., tables, chairs,desks, couches, industrial machinery, or other elements, orreconfigurable elements from being included in the space. The system canidentify constraints using the identified plan information. That is, thesystem can determine from the structures identified by or associatedwith the plan information, limitations on a number, type, size,location, or cost of elements. The system can also receive informationfrom the user that identifies constraints.

Constraints can identify locations, and bounded regions, that an elementcannot intrude upon. For instance, a constraint can identify both alocation of the structure and the size, e.g., a fixed gazebo present ina backyard. Furthermore a constraint can identify only a size, e.g., aconstraint identifying that the gazebo can be moved around the backyard.

Constraints can also identify an overall budget associated with theplan, a maximum budget for an element, a maximum budget for a class ofelements, e.g., dinner tables and dinner chairs can be included in aclass about dinner table ware, specific types of industrial machinerycan be included in a class, bath tubs can be included in a class, or anaverage budget for the elements or class of elements. Furthermore aconstraint can be associated with the cost of additional elementsrequired to connect or configure elements, or effect multipleconfigurations of a reconfigurable element, e.g., pulleys, runningboards, and so on.

Furthermore the system can determine whether one or more structuresincluded in the space are reconfigurable. That is, the system canidentify multiple configurations of a structure, e.g., a wall that canslide into a different position, and identify constraints that satisfyboth of the configurations. For instance, a reconfigurable dining tablecan have a first configuration where the table is unextended and asecond configuration where the table has been extended to seat morepeople. The system can identify a constraint that the secondconfiguration, e.g., the extended table, must fit inside of a diningroom.

Additionally, particular structures, such as a first piece of machinerythat connects to a second piece of machinery to function, can beidentified as being part of a single functional unit, e.g., the firstand second pieces of machinery connected. The system can identify aconstraint that the two structures need to be located in a particularconfiguration. In some implementations, the system can access a databasethat includes specific structures and their configurations with otherstructures. For instance, the database can identify that when twoparticular structures are identified in a plan, the two structurescomprise a single functional unit. Furthermore, when the databasedetermines that there are a multitude of configurations for thestructures, input can be received from, for example, the user todetermine the correct configuration. In some implementations the usercan provide information to the system identifying that two structuresneed to be in a particular configuration.

The system receives input regarding uses or elements to be included in areconfigurable design (step 206). The system receives input identifyinga use of the space, e.g., commercial use, recreational use, residentialuse, industrial use, and so on. In some implementations the system canreceive more than one use, e.g., a house with an attached rental in-lawunit, or a store also used as a restaurant at night. The system canprovide to the user a list or menu of possible uses. In someimplementations the system can present overarching categories of uses,e.g., commercial or residential use, and receive a selection of aprimary category of use. The system can then present a list or menu ofmore detailed uses, e.g., for a commercial use the system can present arestaurant, or store, for a residential use the system can present anapartment or stately manor. Furthermore the system can receive multiplecategories and blend the uses, e.g., a user can select commercial andresidential and be presented with a house and attached in-law rentalunit.

The input can identify elements that the user wants included in thespace. For instance, the user can identify that a stove, dining table,dining chairs, and table-top needs to be included in the space. The usercan also identify a location, or approximate location, that the elementsare to be included in. For instance a user can provide information thatthe stove needs to be located in a particular room, and the diningtables in a separate or same room.

The user can provide rules that define uses, elements, or configurationsof the space. A rule can define that a particular room is to be used fora first use, e.g., an in-law short-term rental unit, and another room isto be associated with a different second use, e.g., a residential use.Furthermore, the user can provide a rule that a stove needs to belocated in a particular room, and a rule that a dining table needs to belocated in a different particular room. Alternatively, the user canprovide a rule that the dining table and kitchen need to be in differentrooms, without defining the location of either element. The user canprovide a rule that particular elements be included near, or within acertain distance, of other elements. For example, a user can provide arule that a work desk be located within 10 feet of a bookshelf andwithin a threshold range of a door. The user can provide the rule astext, e.g., ‘element X located 5 feet from element Y’, or the system canprovide a graphical view of the space and receive a rule, e.g., the usercan place two elements on the space, or make a selection of two elementsand define the distance on the graphical view.

Additionally, rules can define complex relationships between uses andconfigurations of elements. For instance, a user can provide a rule thata space has a first use, e.g., a store, and a second use, e.g., arestaurant, depending on the configuration of a reconfigurable element.That is, the user can define that the space is to be a restaurant when areconfigurable element, a table that extends from a wall, is in theextended position, and the space is to be a store when the table ishidden in the wall.

The user can provide parameters that define uses, elements, orconfigurations of the space. A parameter is a specific identification ofa use, element or configuration, e.g., a parameter can define a locationof an element, a specific use, or a specific use that depends on aspecific reconfigurable element in a specific configuration.Furthermore, a parameter can define attributes of a particular element,for example a parameter can identify a minimum radius around an element,or a specific cost of an element, or specific range of costs of anelement. Parameters can further identify dimensions of any aspect of aparticular space, including a wall or perimeter lengths, ceiling height,door or window width, or the dimensions of any of the elements above.

The system evaluates a library of elements to identify particularelements for inclusion in the space (step 208). The system determineselements that can be included in the space based on the planinformation, the identified constraints, and the input identifying usesor elements of the space. In some implementations the system can receiveinput that identifies multiple uses of the space. In someimplementations the system can obtain elements for each use. In someimplementations, elements that the user has identified will be selectedfrom the library of elements without any further processing forinclusion in the space. In some implementations, elements that the userhas identified will be analyzed according to any identified constraints,and input identifying uses. When the system determines that the userinputted elements should not be included in the space, e.g., the elementwon't fit or is too costly for a specified budget, the system can promptthe user and/or offer similar elements, i.e., elements that are similarin functionality, appearance, or of a lower cost.

The system accesses a library of elements to determine elements that fitthe plan information, constraints, and input. In some implementationsthe library of elements can be broken up into categories of elements,e.g., different tables can be stored in a table category, and differentswimming pools can be stored in a swimming pool category. Furthermore,within each category the elements can be further categorized by size, orcost of the element. The library of elements can also store potentialuse information for each element, e.g., a table can be used forcommercial, residential, or industrial uses, and a high-tech assemblydevice can only be for an industrial use.

In some implementations the system can generate/or identify rules thatsatisfy the identified plan information, constraints, and receivedinput. The rules can then be applied to the library of elements, and thesystem can obtain elements from the library. For example, the system canfirst identify elements in the library of elements that satisfy areceived use. As described above, in some implementations the library ofelements can identify potential uses for each element. The system canidentify elements that include a received use in the potential uses foreach element. The system can then filter the elements that satisfy ause, to remove elements that don't satisfy the identified constraints,and the plan information. That is, the system can remove elements toolarge, or too costly, to be placed in the space.

In some implementations the system can store templates that defineelements likely to be included in a space based on a received use. Forinstance, if the space is an apartment, the system can access a templaterelated to residential apartments, and obtain elements, e.g., bed frame,desk, kitchen elements, couch, bookshelf, lights, and so on. The systemcan refine the elements obtained from the template by the identifiedconstraints. The system can discard elements that are out of budget, andreplace them with other elements that are similar, e.g., a dining roomtable can be replaced with a cheaper dining room table.

Particular elements that the system determines as satisfying planinformation, received uses, and constraints, such as a stove, oven, andcounter tops, can be identified by the system as being linked togetherto form a functional unit, e.g., kitchen ware. These elements might allfit separately in a space identified by a plan, but not fit close toeach other as a functional unit. The system can treat the elements aspart of a single functional unit, and determine whether the functionalunit satisfies each of the received constraints, e.g., whether thefunctional unit is too large or too costly. The system can replaceelements included in a functional unit to satisfy any receivedconstraint, e.g., replace the stove with a smaller or less costly stove.

The system determines reconfigurable elements from the evaluatedelements (step 210). The system can access a library of elements andidentify reconfigurable elements that satisfy the received input, e.g.,input regarding uses, and that are included in the evaluated elements.In some implementations the system can access templates, or rules, thatidentify reconfigurable elements for each of a variety of uses. Thesystem can then filter the reconfigurable elements identified by aparticular template by removing reconfigurable elements that are notincluded in the evaluated elements. For instance, if the space is a dormroom, the system can identify one or more reconfigurable elements from adorm room template, e.g., a raised bed with a connected desk below itthat can transform into a separate bed and a separate desk, and a tablethat transforms vertically into a bookshelf. The system can then filterthe reconfigurable elements to include only reconfigurable elements thatare included in the evaluated elements.

The templates can be specific to particular uses, e.g., a dorm room, orcan encompass general uses, e.g., residential uses. Since thereconfigurable elements are included in the evaluated elements, areconfigurable element will satisfy any identified constraints, e.g.,size, or cost, that are related to the space. Therefore, reconfigurableelements from templates that encompass only general uses, e.g.,residential uses, will be filtered to satisfy the constraints by onlyincluding reconfigurable elements that are included in the evaluatedelements. In this way the system won't include a reconfigurable elementdesigned for a stately manor, if the constraints and plan informationidentify a dorm room.

Additionally, the system can identify a reconfigurable element that caneffect multiple uses of the space. For example, if the user inputidentifies that the space is to be used as a restaurant, and a store,the system can identify that one of the reconfigurable elements is atable that can extend from, and recede into, the wall. The system canaccess two templates, one for the restaurant and one for the store, anddetermine reconfigurable elements that are identified in both templates.

Furthermore, the system can determine reconfigurable elements for anyreconfigurable structures. For instance, a reconfigurable structure canbe a table that extends from and recedes back into a wall. The systemcan determine to include an end table that can fold out into a chair.For example, when the reconfigurable structure is in a firstconfiguration, e.g., the table is receded into the wall, thereconfigurable element can be in a first configuration, e.g., the endtable can store products on it. When the reconfigurable structure is ina second configuration, e.g., the table is extended from the wall, thereconfigurable element can be in a second configuration, e.g., the endtable can fold out into a chair to sit at the table.

The system determines a first configuration of a reconfigurable elementand presents a first design (step 212). The system selects a firstconfiguration of the determined reconfigurable element, and determines afirst design that includes the reconfigurable element. The systemdetermines a location in the space for the reconfigurable element andone or more of the evaluated elements. The system then presents thefirst design to the user. An example of a first design is illustrated inFIG. 3A, and described below.

In some implementations the system can obtain one or more rules thatdefine general relationships between locations of elements. Forinstance, a rule can define that a lamp should be placed within athreshold number of feet, e.g., 1 foot, or 2 feet, of a chair. Anotherrule can define that a dining table should be placed within a thresholdnumber of feet of dining chairs, and ceiling or floor lamps. Anotherrule can define a minimum distance from a wall to specific elements, orthat certain categories of elements should be a minimum distance apart,e.g., bathroom elements a certain distance apart from any other element,or entertainment elements such as a TV stand a certain distance apartfrom a desk or office. Additionally the rules can specify thatparticular elements should be grouped in general in the same room, e.g.,all kitchen elements should be in a room, or all entertainment elementsshould be in a room. The rules can specify that particular elementsrelated to a specific use, e.g., commercial use, should be in one room,and other elements, e.g., residential use, should be in a separate room.

In some implementations the system can identify additional elements thatare needed to effect multiple configurations of a reconfigurableelement. For example, a movable wall separating a room in a firstconfiguration, and moving against another wall to open up the room in asecond configuration, can require a running board to transition betweenconfigurations. The additional elements can include steps, runningboards, pivots, hinges, tracks, pulleys, and so on.

The system determines a second configuration of the reconfigurableelement and presents a second design (step 214). The system selects asecond configuration of the reconfigurable element and determines asecond design that includes the reconfigurable element. The systemdetermines a location for one or more evaluated elements and thereconfigurable element, described above. The evaluated elementsdetermined to be in the second design can be different, or the same, asthe elements in the first design. For instance, the second design canremove, exchange, or add elements depending on the use of the space inthe second design, or depending on size constraints when thereconfigurable element is in the second configuration. Furthermore thesystem can present different designs of the second figuration and firstconfiguration in a viewer for display to the user.

The system can receive input from the user on the first design, and useany received input from the user to present a second configuration. Forexample, if the user identified that an element should be exchanged, thesystem can exchange the element with a similar element, e.g., similar infunction, visual look, or cost. In another example, when the useridentified a change of a use of the space, the system can reevaluateelements to include new elements based on the new use case, describedabove with reference to steps 208 and 210. The system then presents thesecond design to the user. An example of a second design is illustratedin FIG. 3B, and described below.

The system can modify the elements included in the first design toaccommodate a reconfigurable element in the second configuration. Forexample, if the second configuration takes up more area of the space,then an element that is too close to the reconfigurable element mightneed to be relocated, or replaced with a different element. The systemcan include additional elements, e.g., pulleys, running boards, pivots,and so on, to allow the transition to the second configuration from thefirst design.

The second configuration of the reconfigurable element can identify ause different from the use in the first configuration. The system canmodify the elements included in the first design to accommodate thissecond use, e.g., removing elements, modifying locations of elements, orexchanging elements with other evaluated elements.

Furthermore, the system can provide an automated controller toreconfigure the elements in the space based on the first and seconddesigns. That is, in some implementations, once the respective first andsecond designs are adopted and implemented in a space, a controller canbe used to reconfigure the space from a first configuration to a secondconfiguration including reconfiguring any reconfigurable elements in therespective designs automatically. The controller can be associated witha computing system and other electronic or electromechanical elements toenable reconfiguration.

FIG. 3A illustrates an example design with a reconfigurable element in afirst configuration. The design includes a reconfigurable element 302 ina first configuration, e.g., a wall separating a room into two sections.The first section, e.g., section 304, is a living area, and the secondsection, e.g., section 306, is a working area.

In determining the first design, the system has identified planinformation for a space, e.g., a live/work studio apartment with apre-existing kitchen wall structure 312. The system has also receivedinput from a user defining the potential uses of the space, which inthis example includes two uses, e.g., a work use and a residential use.The input can also identify any elements to include, e.g., a particulardesk 308 and chair 310. Additionally, the input can define thedimensions or cost of the particular desk 308 and chair 310.

The system has identified the kitchen wall 312 as a constraint on thelayout of the space, limiting the elements it can place in the space.The system has also received input regarding the uses of the space,e.g., a live/work studio. The input specified a set of rules for thespace, for example a received rule could be that the pre-existingstructure 312, e.g., the kitchen wall, defines a bounded space forelements in a class of kitchen elements. Further rules could define thateach kitchen element be located a certain distance apart from eachother, e.g., the stove 314 is within a threshold distance of a counter316, and a different threshold distance from a refrigerator 318.

After receiving input, the system then evaluated a library of elementsfor particular elements inclusion in the space to satisfy the proposeduses. The system has determined kitchen elements, e.g., elements312-316, to place inside of a room bounded by the pre-existing structure312, a bed 320, and elements for the work use, e.g., elements 306-310and sofa 322. The system used the identified constraint associated withthe pre-existing structure 312, and the received rules, to identifykitchen elements that fit inside the space bounded by the structure 312.

The system has determined a reconfigurable element, e.g., the wall 302,that satisfies the received input, plan information, and identifiedconstraints. The system determined that a reconfigurable wall separatingthe contiguous studio space into two separate spaces, e.g., space 304and space 306, would effect the intended use of the space, e.g., alive/work studio. The wall includes two pieces of retractable wall thatconnect in the middle of the studio when fully extended, and each pieceretracts to respective sides of the studio, illustrated in FIG. 3.B.

The system has determined the first design by placing the reconfigurableelement 302 and one or more of the evaluated elements in the space. Thesystem has then provided the first design with the reconfigurableelement 302 in a first configuration.

FIG. 3B illustrates an example design with a reconfigurable element in asecond configuration. The design includes a reconfigurable element 302in a second configuration, e.g., two pieces of a wall 302 that retractto separate sides of the space, e.g., the studio. The system hasdetermined to use the same elements as in the first design, except inorder to maximize the usefulness of the space the system has changedlocations of some elements. For instance, the desk 308 has been placednear a wall of the studio to free up room in front of the couch 322.Since the use of the space with the reconfigurable element in the secondposition is a residential use, the system has determined to increase thespace in front of the couch 322. Furthermore, the system could also havereceived input indicating a rule that in residential use, the couch 322and desk 308 are to be more than a threshold distance apart.

The system has identified additional elements 324 needed to allow atransition between a first configuration of the reconfigurable element302, and the second configuration. For example, the additional elementscan include a running board or track on the ceiling that the wall 302can be hung from or slide along. Furthermore, the system can determinethat additional elements 324 are needed on the sides of the studio toreceive the wall 302 when it transitions into the second configuration.

FIG. 4 is a block diagram of an example data processing apparatus 400that can implement the reconfigurable element system. While only onedata processing apparatus is shown in FIG. 4, the reconfigurable elementsystem may consist of multiple data processing apparatus.

The data processing apparatus 400 can have hardware or firmware devicesconnected by a bus 410, including one or more processors 402, computerreadable medium 404 to store instructions and data, and one or more userinterface devices 406. Examples of user interface devices 406 include adisplay, a camera, a speaker, a microphone, a tactile feedback device, akeyboard, and a mouse. The data processing apparatus 400 includes acommunication interface 408 to communicate with other data processingapparatus over the Internet, a LAN, or a WAN.

Embodiments of the subject matter and the operations described in thisspecification can be implemented in digital electronic circuitry, or incomputer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. Embodiments of the subject matterdescribed in this specification can be implemented as one or morecomputer programs, i.e., one or more modules of computer programinstructions, encoded on computer storage medium for execution by, or tocontrol the operation of, data processing apparatus. Alternatively or inaddition, the program instructions can be encoded on anartificially-generated propagated signal, e.g., a machine-generatedelectrical, optical, or electromagnetic signal, that is generated toencode information for transmission to suitable receiver apparatus forexecution by a data processing apparatus. A computer storage medium canbe, or be included in, a computer-readable storage device, acomputer-readable storage substrate, a random or serial access memoryarray or device, or a combination of one or more of them. Moreover,while a computer storage medium is not a propagated signal, a computerstorage medium can be a source or destination of computer programinstructions encoded in an artificially-generated propagated signal. Thecomputer storage medium can also be, or be included in, one or moreseparate physical components or media (e.g., multiple CDs, disks, orother storage devices).

The operations described in this specification can be implemented asoperations performed by a data processing apparatus on data stored onone or more computer-readable storage devices or received from othersources.

The term “data processing apparatus” encompasses all kinds of apparatus,devices, and machines for processing data, including by way of example aprogrammable processor, a computer, a system on a chip, or multipleones, or combinations, of the foregoing The apparatus can includespecial purpose logic circuitry, e.g., an FPGA (field programmable gatearray) or an ASIC (application-specific integrated circuit). Theapparatus can also include, in addition to hardware, code that createsan execution environment for the computer program in question, e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, a cross-platform runtimeenvironment, a virtual machine, or a combination of one or more of them.The apparatus and execution environment can realize various differentcomputing model infrastructures, such as web services, distributedcomputing and grid computing infrastructures.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor data (e.g., one or more scripts stored in a markup languagedocument), in a single file dedicated to the program in question, or inmultiple coordinated files (e.g., files that store one or more modules,sub-programs, or portions of code). A computer program can be deployedto be executed on one computer or on multiple computers that are locatedat one site or distributed across multiple sites and interconnected by acommunication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform actions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing actions in accordance with instructions andone or more memory devices for storing instructions and data. Generally,a computer will also include, or be operatively coupled to receive datafrom or transfer data to, or both, one or more mass storage devices forstoring data, e.g., magnetic, magneto-optical disks, or optical disks.However, a computer need not have such devices. Moreover, a computer canbe embedded in another device, e.g., a mobile telephone, a personaldigital assistant (PDA), a mobile audio or video player, a game console,a Global Positioning System (GPS) receiver, or a portable storage device(e.g., a universal serial bus (USB) flash drive), to name just a few.Devices suitable for storing computer program instructions and datainclude all forms of non-volatile memory, media and memory devices,including by way of example semiconductor memory devices, e.g., EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back-end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front-end component, e.g., aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described in this specification, or any combination of one ormore such back-end, middleware, or front-end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), an inter-network (e.g., the Internet), andpeer-to-peer networks (e.g., ad hoc peer-to-peer networks).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. In someembodiments, a server transmits data (e.g., an HTML page) to a clientdevice (e.g., for purposes of displaying data to and receiving userinput from a user interacting with the client device). Data generated atthe client device (e.g., a result of the user interaction) can bereceived from the client device at the server.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular embodiments of particular inventions.Certain features that are described in this specification in the contextof separate embodiments can also be implemented in combination in asingle embodiment. Conversely, various features that are described inthe context of a single embodiment can also be implemented in multipleembodiments separately or in any suitable subcombination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular embodiments of the subject matter have been described.Other embodiments are within the scope of the following claims. In somecases, the actions recited in the claims can be performed in a differentorder and still achieve desirable results. In addition, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In certain implementations, multitasking and parallelprocessing may be advantageous.

What is claimed is:
 1. A method comprising: identifying plan informationrelating to a space under evaluation; identifying constraints related tostructures associated with the plan information; receiving inputregarding uses or elements to be included in a reconfigurable design forthe space; evaluating a library of elements for inclusion in the spaceincluding determining one or more reconfigurable elements that satisfythe received input, wherein the evaluating is based at least in part onthe plan information, the constraints and the input; determining a firstconfiguration of a reconfigurable element of the one or morereconfigurable elements including a first placement in a first designassociated with the space and presenting the first design including thereconfigurable element in accordance with the first configuration; anddetermining a second different configuration of the reconfigurableelement including a second placement in a second different designassociated with the space and presenting the second different designincluding the reconfigurable element in accordance with the seconddifferent configuration, wherein the method further includes identifyingone or more additional elements required to reconfigure thereconfigurable element into the first and second differentconfigurations and adding the one or more additional elements into thefirst and second different designs.
 2. The method of claim 1 wherein theplan information includes a plan that is selected from the groupcomprising a floor plan, a footprint or a lot plan.
 3. The method ofclaim 1 wherein identifying constraints includes determining whether oneor more structures that are included in the space are or are notreconfigurable.
 4. The method of claim 3 wherein evaluating the libraryincludes determining a reconfigurable element for at least one of thereconfigurable structures that is included in the space.
 5. The methodof claim 1 wherein identifying constraints includes receiving constraintinformation from a user that identifies constraints associated with thespace.
 6. The method of claim 1 wherein receiving input includesreceiving at least two uses for the space and wherein determining thereconfigurable element is performed so as to enable satisfaction ofplural uses of the at least two uses.
 7. The method of claim 1 whereinreceiving input includes receiving an indication of an element toinclude in the first and second different designs, and wherein themethod further includes determining a plurality of configurations forthe element, determining one or more additional elements that arerequired to be included in the first and second different designs toenable reconfiguration of the element when in the first design ascompared to when in the second different design, and adding the one ormore additional elements to the first and second different designs. 8.The method of claim 1 wherein the evaluating is automatic and whereindetermining one or more reconfigurable elements includes determining oneor more reconfigurable elements from the library.
 9. The method of claim1 wherein the first placement and the second placement is the same andthe reconfiguration of the reconfigurable element is changed in thefirst design and second design without changing a position of thereconfigurable element.
 10. The method of claim 1 wherein the firstplacement and the second placement is different, and wherein the methodfurther includes determining one or more additional elements forinclusion in the first and second designs that are required to enable achange of location of the reconfigurable element from the first locationto the second location.
 11. The method of claim 1 wherein determining afirst configuration includes determining a first configuration that isin accordance with a first use that is received as part of the input andwherein determining the second different configuration includesdetermining a second different configuration of the reconfigurableelement that is in accordance with a second different use that isreceived as part of the input.
 12. The method of claim 1 wherein thereconfigurable element is selected from the group comprising a wallstructure, a furniture item, a table structure, a bookshelf, doors,windows, desks, tables, work surfaces, steps, shelves.
 13. The method ofclaim 1 wherein the one or more additional elements are selected fromthe group comprising pivots, tracks, pulleys, running boards.
 14. Themethod of claim 1 wherein the presenting the first and second differentdesigns includes presenting alternative designs as suggestions to aviewer including different configurations of the reconfigurable element.15. The method of claim 1 further comprising receiving an update to oneor more of the input including update to a use or element, and themethod further comprising determining a new reconfigurable element orreconfiguring the reconfigurable element in accordance with the update.16. The method of claim 1 further comprising determining modificationsto one or more elements included in the first design or one or moreadditional elements for inclusion in the first design in order to enablethe reconfiguration of the reconfigurable element from the firstconfiguration to the second different configuration.
 17. The method ofclaim 16 further comprising including the one or more determinedadditional elements in the first and second different designs.
 18. Themethod of claim 1 wherein receiving input includes receiving one or morerules that govern desired uses of the space, configuration of the spaceor elements in the space, preferences of the user or required elementsto be included in one or more of the first or second different designs.19. The method of claim 1 wherein the method further comprises providingthe first design to a viewer, receiving input for one or more additionalconsiderations for the space and providing the second different designthat incorporates the one or more additional considerations.
 20. Themethod of claim 1 further comprising prior to evaluating, receivinginput that defines the initial first and second different designswithout the inclusion of a reconfigurable element, evaluating theinitial first and second different designs, and wherein evaluating thelibrary includes determining the reconfigurable element for inclusion inboth the first and second different designs based on the evaluating theinitial first and second different designs.
 21. The method of claim 20further comprising identifying one or more additional elements requiredto reconfigure the reconfigurable element into the first and seconddifferent configurations and adding the one or more additional elementsinto the first and second different designs.
 22. The method of claim 1wherein the input includes at least two uses and wherein identifyingplan information includes suggesting one or more candidate plans andreceiving a selection of a plan.
 23. The method of claim 1 furthercomprising providing a controller for configuring and reconfiguring thespace based on the first and second different designs.
 24. The method ofclaim 1 wherein the received input is parameter based and defines one ormore parameters for uses, elements, or configurations of the space. 25.The method of claim 1 wherein the received input is rules based anddefines one or more rules for uses, elements or configurations of thespace.
 26. The method of claim 1 wherein identifying one or moreconstraints includes identifying one or more of a physical constraint onan element for inclusion in the space or other constraint on the firstor second different design.
 27. The method of claim 26 wherein theconstraint is a cost of the reconfigurable element or additionalelements required to support the first and second configurations.
 28. Asystem comprising: one or more computers and one or more storage devicesstoring instructions that are operable, when executed by the one or morecomputers, to cause the one or more computers to perform operationscomprising: identifying plan information relating to a space underevaluation; identifying constraints related to structures associatedwith the plan information; receiving input regarding uses or elements tobe included in a reconfigurable design for the space; evaluating alibrary of elements for inclusion in the space including determining oneor more reconfigurable elements that satisfy the received input, whereinthe evaluating is based at least in part on the plan information, theconstraints and the input; determining a first configuration of areconfigurable element of the one or more reconfigurable elementsincluding a first placement in a first design associated with the spaceand presenting the first design including the reconfigurable element inaccordance with the first configuration; and determining a seconddifferent configuration of the reconfigurable element including a secondplacement in a second different design associated with the space andpresenting the second different design including the reconfigurableelement in accordance with the second different configuration, whereinthe method further includes identifying one or more additional elementsrequired to reconfigure the reconfigurable element into the first andsecond different configurations and adding the one or more additionalelements into the first and second different designs.
 29. The system ofclaim 28 wherein the plan information includes a plan that is selectedfrom the group comprising a floor plan, a footprint or a lot plan. 30.The system of claim 28 wherein identifying constraints includesdetermining whether one or more structures that are included in thespace are or are not reconfigurable.
 31. The system of claim 30 whereinevaluating the library includes determining a reconfigurable element forat least one of the reconfigurable structures that is included in thespace.
 32. The system of claim 28 wherein identifying constraintsincludes receiving constraint information from a user that identifiesconstraints associated with the space.
 33. The system of claim 28wherein receiving input includes receiving at least two uses for thespace and wherein determining the reconfigurable element is performed soas to enable satisfaction of plural uses of the at least two uses. 34.The system of claim 28 wherein receiving input includes receiving anindication of an element to include in the first and second differentdesigns, and wherein the method further includes determining a pluralityof configurations for the element, determining one or more additionalelements that are required to be included in the first and seconddifferent designs to enable reconfiguration of the element when in thefirst design as compared to when in the second different design, andadding the one or more additional elements to the first and seconddifferent designs.
 35. The system of claim 28 wherein the evaluating isautomatic and wherein determining one or more reconfigurable elementsincludes determining one or more reconfigurable elements from thelibrary.
 36. The system of claim 28 wherein the first placement and thesecond placement is the same and the reconfiguration of thereconfigurable element is changed in the first design and second designwithout changing a position of the reconfigurable element.
 37. Thesystem of claim 28 wherein the first placement and the second placementis different, and wherein the method further includes determining one ormore additional elements for inclusion in the first and second designsthat are required to enable a change of location of the reconfigurableelement from the first location to the second location.
 38. The systemof claim 28 wherein determining a first configuration includesdetermining a first configuration that is in accordance with a first usethat is received as part of the input and wherein determining the seconddifferent configuration includes determining a second differentconfiguration of the reconfigurable element that is in accordance with asecond different use that is received as part of the input.
 39. Thesystem of claim 28 wherein the reconfigurable element is selected fromthe group comprising a wall structure, a furniture item, a tablestructure, a bookshelf, doors, windows, desks, tables, work surfaces,steps, shelves.
 40. The system of claim 28 wherein the one or moreadditional elements are selected from the group comprising pivots,tracks, pulleys, running boards.
 41. The system of claim 28 wherein thepresenting the first and second different designs includes presentingalternative designs as suggestions to a viewer including differentconfigurations of the reconfigurable element.
 42. The system of claim28, wherein the operations further comprise receiving an update to oneor more of the input including update to a use or element, and themethod further comprising determining a new reconfigurable element orreconfiguring the reconfigurable element in accordance with the update.43. The system of claim 28 wherein the operations further comprisedetermining modifications to one or more elements included in the firstdesign or one or more additional elements for inclusion in the firstdesign in order to enable the reconfiguration of the reconfigurableelement from the first configuration to the second differentconfiguration.
 44. The system of claim 43, wherein the operationsfurther comprise including the one or more determined additionalelements in the first and second different designs.
 45. The system ofclaim 28 wherein receiving input includes receiving one or more rulesthat govern desired uses of the space, configuration of the space orelements in the space, preferences of the user or required elements tobe included in one or more of the first or second different designs. 46.The system of claim 28 wherein the operations further comprise providingthe first design to a viewer, receiving input for one or more additionalconsiderations for the space and providing the second different designthat incorporates the one or more additional considerations.
 47. Thesystem of claim 28, wherein the operations further comprise prior toevaluating, receiving input that defines the initial first and seconddifferent designs without the inclusion of a reconfigurable element,evaluating the initial first and second different designs, and whereinevaluating the library includes determining the reconfigurable elementfor inclusion in both the first and second different designs based onthe evaluating the initial first and second different designs.
 48. Thesystem of claim 47, wherein the operations further comprise identifyingone or more additional elements required to reconfigure thereconfigurable element into the first and second differentconfigurations and adding the one or more additional elements into thefirst and second different designs.
 49. The system of claim 28 whereinthe input includes at least two uses and wherein identifying planinformation includes suggesting one or more candidate plans andreceiving a selection of a plan.
 50. The system of claim 28, wherein theoperations further comprise providing a controller for configuring andreconfiguring the space based on the first and second different designs.51. The system of claim 28 wherein the received input is parameter basedand defines one or more parameters for uses, elements, or configurationsof the space.
 52. The system of claim 28 wherein the received input isrules based and defines one or more rules for uses, elements orconfigurations of the space.
 53. The system of claim 28 whereinidentifying one or more constraints includes identifying one or more ofa physical constraint on an element for inclusion in the space or otherconstraint on the first or second different design.
 54. The system ofclaim 53 wherein the constraint is a cost of the reconfigurable elementor additional elements required to support the first and secondconfigurations.
 55. A computer program product, encoded on one or morenon-transitory computer storage media, comprising instructions that whenexecuted by one or more computers cause the one or more computers toperform operations comprising: one or more computers and one or morestorage devices storing instructions that are operable, when executed bythe one or more computers, to cause the one or more computers to performoperations comprising: identifying plan information relating to a spaceunder evaluation; identifying constraints related to structuresassociated with the plan information; receiving input regarding uses orelements to be included in a reconfigurable design for the space;evaluating a library of elements for inclusion in the space includingdetermining one or more reconfigurable elements that satisfy thereceived input, wherein the evaluating is based at least in part on theplan information, the constraints and the input; determining a firstconfiguration of a reconfigurable element of the one or morereconfigurable elements including a first placement in a first designassociated with the space and presenting the first design including thereconfigurable element in accordance with the first configuration; anddetermining a second different configuration of the reconfigurableelement including a second placement in a second different designassociated with the space and presenting the second different designincluding the reconfigurable element in accordance with the seconddifferent configuration, wherein the method further includes identifyingone or more additional elements required to reconfigure thereconfigurable element into the first and second differentconfigurations and adding the one or more additional elements into thefirst and second different designs.
 56. The computer program product ofclaim 55 wherein the plan information includes a plan that is selectedfrom the group comprising a floor plan, a footprint or a lot plan. 57.The computer program product of claim 55 wherein identifying constraintsincludes determining whether one or more structures that are included inthe space are or are not reconfigurable.
 58. The computer programproduct of claim 57 wherein evaluating the library includes determininga reconfigurable element for at least one of the reconfigurablestructures that is included in the space.
 59. The computer programproduct of claim 55 wherein identifying constraints includes receivingconstraint information from a user that identifies constraintsassociated with the space.
 60. The computer program product of claim 55wherein receiving input includes receiving at least two uses for thespace and wherein determining the reconfigurable element is performed soas to enable satisfaction of plural uses of the at least two uses. 61.The computer program product of claim 55 wherein receiving inputincludes receiving an indication of an element to include in the firstand second different designs, and wherein the method further includesdetermining a plurality of configurations for the element, determiningone or more additional elements that are required to be included in thefirst and second different designs to enable reconfiguration of theelement when in the first design as compared to when in the seconddifferent design, and adding the one or more additional elements to thefirst and second different designs.
 62. The computer program product ofclaim 55 wherein the evaluating is automatic and wherein determining oneor more reconfigurable elements includes determining one or morereconfigurable elements from the library.
 63. The computer programproduct of claim 55 wherein the first placement and the second placementis the same and the reconfiguration of the reconfigurable element ischanged in the first design and second design without changing aposition of the reconfigurable element.
 64. The computer program productof claim 55 wherein the first placement and the second placement isdifferent, and wherein the method further includes determining one ormore additional elements for inclusion in the first and second designsthat are required to enable a change of location of the reconfigurableelement from the first location to the second location.
 65. The computerprogram product of claim 55 wherein determining a first configurationincludes determining a first configuration that is in accordance with afirst use that is received as part of the input and wherein determiningthe second different configuration includes determining a seconddifferent configuration of the reconfigurable element that is inaccordance with a second different use that is received as part of theinput.
 66. The computer program product of claim 55 wherein thereconfigurable element is selected from the group comprising a wallstructure, a furniture item, a table structure, a bookshelf, doors,windows, desks, tables, work surfaces, steps, shelves.
 67. The computerprogram product of claim 55 wherein the one or more additional elementsare selected from the group comprising pivots, tracks, pulleys, runningboards.
 68. The computer program product of claim 55 wherein thepresenting the first and second different designs includes presentingalternative designs as suggestions to a viewer including differentconfigurations of the reconfigurable element.
 69. The computer programproduct of claim 55, wherein the operations further comprise receivingan update to one or more of the input including update to a use orelement, and the method further comprising determining a newreconfigurable element or reconfiguring the reconfigurable element inaccordance with the update.
 70. The computer program product of claim 55wherein the operations further comprise determining modifications to oneor more elements included in the first design or one or more additionalelements for inclusion in the first design in order to enable thereconfiguration of the reconfigurable element from the firstconfiguration to the second different configuration.
 71. The computerprogram product of claim 70, wherein the operations further compriseincluding the one or more determined additional elements in the firstand second different designs.
 72. The computer program product of claim55 wherein receiving input includes receiving one or more rules thatgovern desired uses of the space, configuration of the space or elementsin the space, preferences of the user or required elements to beincluded in one or more of the first or second different designs. 73.The computer program product of claim 55 wherein the operations furthercomprise providing the first design to a viewer, receiving input for oneor more additional considerations for the space and providing the seconddifferent design that incorporates the one or more additionalconsiderations.
 74. The computer program product of claim 55, whereinthe operations further comprise prior to evaluating, receiving inputthat defines the initial first and second different designs without theinclusion of a reconfigurable element, evaluating the initial first andsecond different designs, and wherein evaluating the library includesdetermining the reconfigurable element for inclusion in both the firstand second different designs based on the evaluating the initial firstand second different designs.
 75. The computer program product of claim74, wherein the operations further comprise identifying one or moreadditional elements required to reconfigure the reconfigurable elementinto the first and second different configurations and adding the one ormore additional elements into the first and second different designs.76. The computer program product of claim 55 wherein the input includesat least two uses and wherein identifying plan information includessuggesting one or more candidate plans and receiving a selection of aplan.
 77. The computer program product of claim 55, wherein theoperations further comprise providing a controller for configuring andreconfiguring the space based on the first and second different designs.78. The computer program product of claim 55 wherein the received inputis parameter based and defines one or more parameters for uses,elements, or configurations of the space.
 79. The computer programproduct of claim 55 wherein the received input is rules based anddefines one or more rules for uses, elements or configurations of thespace.
 80. The computer program product of claim 55 wherein identifyingone or more constraints includes identifying one or more of a physicalconstraint on an element for inclusion in the space or other constrainton the first or second different design.
 81. The computer programproduct of claim 80 wherein the constraint is a cost of thereconfigurable element or additional elements required to support thefirst and second configurations.